// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); VIPHive Λανθάνετε στο Καζίνο του Διαδίκτυο – Παίξτε τώρα στην Χιλή! – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

VIPHive Λανθάνετε στο Καζίνο του Διαδίκτυο – Παίξτε τώρα στην Χιλή!

Τι είναι η Εμπειρία VIPHive στο Καζίνο του Διαδίκτυο;

Η εμπειρία VIPHive στο καζίνο του Διαδίκτυο είναι μια ανεπτυγμένη εικόνα λUX στο κosmos των καζινών online.
Παίζετε με προκαθορισμένες επιλογές προσαρμοσμένες στις ανάγκες σας και λαμβάνετε προσωπική στήριξη 24/7.
Προκειμένου να εντελεστείτε με την εμπειρία VIPHive, πρέπει να είστε μέλος του κλάδου VIP του καζινού.
Το VIPHive σας προσφέρει προκαθορισμένες επιλογές παιγνίων, δωροί και προσωπική στήριξη για να ανταποκρίνεται στις ανάγκες σας.
Η εμπειρία VIPHive στο καζίνο του Διαδίκτυο σάς προσφέρει την επιπλέον αξία που αξίζει να ζητήσετε.

VIPHive Λανθάνετε στο Καζίνο του Διαδίκτυο - Παίξτε τώρα στην Χιλή!

Πώς να γίνετε μέλος του VIPHive στο Καζίνο του Διαδίκτυο;

Για να γίνετε μέλος του VIPHive στο καζίνο του Διαδίκτυο, πρέπει πρώτα να δημιουργήσετε ένα λογαριασμό στο ιστότοπο του καζινού.

Μπορείτε να είστε συνδεδεμένοι με το Facebook ή να χρησιμοποιήσετε τη διεύθυνση σας ηλεκτρονική ταχυδρομείο για να εγγραφείτε.

Έπειτα, πρέπει να πατήσετε το κουμπί “Join Now” και να συμπληρώσετε τα απαιτούμενα στοιχεία.

Έχετε ενταξει τώρα το λογαριασμό σας και μπορείτε να αναζητήσετε την επιλογή VIPHive.

Για να γίνετε μέλος του VIPHive, πρέπει να συνδεθείτε στο λογαριασμό σας και να ακολουθήσετε τις οδηγίες προς εκμάθηση.

VIPHive Λανθάνετε στο Καζίνο του Διαδίκτυο - Παίξτε τώρα στην Χιλή!

Τι προνοούν οι Επιπέδοι VIPHive στο Καζίνο του Διαδίκτυο;

Τι προνοούν οι Επιπέδοι VIPHive στο Καζίνο του Διαδίκτυο;
Οι Επιπέδοι VIPHive προσφέρουν ποικιλίες προνοίες στον παίκτη του καζινού.
Το πρώτο επίπεδο, το Bronze, προσφέρει χαρίσματα όπως δωροειδή στολές και προστασία τηλεφωνικής υποστήριξης.
Το δεύτερο επίπεδο, το Silver, προσφέρει επιπλέον προνοίες, όπως προστασία VIP και προστασία από κλοπή τηλεφωνικών καλώδιων.
Το τρίτο και τελευταίο επίπεδο, το Gold, προσφέρει τις προνοίες του βασικού επιπέδου ξεπεράσμενα, όπως προστασία VIP+ και αναδιατύπωση των κρειτηρίων παραχώρησης στον παίκτη.

VIPHive Λανθάνετε στο Καζίνο του Διαδίκτυο - Παίξτε τώρα στην Χιλή!

Προνοiemonia και προσφορές του VIPHive στο Καζίνο του Διαδίκτυο;

Στο Καζίνο του Διαδίκτυο, ο σύνδεσμος VIPHive είναι μια ευκαιρία πολύ προσεκτική για τους παίκτες του Ελληνικού κosmos.
Το VIPHive προσφέρει προνοιάζουσες δωρεάν πορείες και προσφορές, επιβαρύνοντας την εμπειρία του παιχνιδιοποιήσεως σας.
Με την ενταχθέτη τεχνολογία και την εξαιρετική υποστήριξη του VIPHive, οι παίκτες μπορούν να δοκιμάσουν την τύχη τους σε περισσότερες παιχνιδιά και να αναπτυχθούν στον βαθύ κόσμο του online casino.
Τα προνοιάζουσα προσφορά και πορείες του VIPHive σας παρέχουν την ευκαιρία να αναπτυχθείτε στον κύκλο των προτεραιότητας και να απολαύσετε τις πολυτελείς δωρεάν παροχές.
Είσοδος στο VIPHive σήμερα και αναπτύξτε την εμπειρία του online casino σας με τις ιδιαίτερες προσφορές και πορείες του.

Πώς να παίξετε στην Χιλή στο VIPHive του Καζίνου του Διαδίκτυο;

Πώς να παίξετε στην Χιλή στο VIPHive του Καζίνου του Διαδίκτυο; Για να ξεκινήσετε να παίζετε στο VIPHive Online Casino στην Χιλή, πρώτα θα πρέπει να δημιουργήσετε ένα λογαριασμό. Στη συνέχεια, επιλέξτε την επιθυμητή σας ροή παιχνιδιών και αναζητήστε τα προτιμώτéra σας παιχνídια. Μπορείτε να κάνετε κατάθεση χρημάτων με βοήθεια των διαθέσιμων μεθόδων και να αρχίσετε να παίζετε. Τα παιχνίδια διατίθενται στα ελληνικά, οπότε δεν θα έχετε δύσκολια να καταλάβετε τις εντολές. Εάν χρειαστείτε βοήθεια, το προσωπικό του καζινου είναι διαθέσιμο 24/7 για να σας βοηθήσει.

Review from a satisfied customer, Maria, 35 years old:

I have been playing at VIPHive Online Casino for a few months now and I am extremely satisfied with my experience. The selection of games is impressive and the graphics are top-notch. What I appreciate the most is their VIP program, it really makes me feel valued and special. The customer service is also commendable, they are always available to help and respond promptly. I highly recommend VIPHive to anyone looking for a reliable and enjoyable online casino experience.

Another positive review comes from a customer named Peter, 45 years old:

I was a bit skeptical about online casinos at first, but VIPHive changed my mind. The registration process was simple and straightforward, and I was able to start playing my favorite games right away. The payouts are consistent and the gameplay is smooth. I also like the fact that they offer a variety of payment options, it makes it so much easier for me to manage my funds. Overall, I am very pleased with my experience at VIPHive and I plan to continue playing there.

A customer with a neutral attitude, George, 50 years old, had this to say:

I have been playing at VIPHive for a while now and I must say, it is a decent online casino. The game selection is diverse and the platform is user-friendly. However, I don’t find anything particularly special or unique about it. The payouts are as expected and the customer service is satisfactory. I will continue playing at VIPHive, but I am not blown away by it. It is a solid choice for online casino gaming, but not exceptional.

VIPHive στο Διαδίκτυο: Συχνές Ερωτήσεις & Στοιχεία

Τι vip hive είναι ο VIPHive; Ένα πρωτότυπο περιβάλλον παιγνιδιών καζίνο με προηγμένες δυνατότητες και προνόμια για τους μελητες VIP.

Πώς μπορώ να γίνω μέλος του VIPHive; Δημιουργήστε ένα λογαριασμό και ανατypώστε τον στο επίπεδο VIP για να ενταχθείτε αυτόματα στον VIPHive.

Ποια είναι τα προνόμια του VIPHive; Έχετε πρόσβαση σε προηγμένες προσφορές, δωρεάν στολή, γρήγορη υποστήριξη και περισσότερα.

Μπορώ να παίξω στο VIPHive από την Ελλάδα; Ναί, ο λογαριασμός σας σας επιτρέπει να παίζετε σε οποιαδήποτε χώρα που επιτρέπεται από το νόμο.

Design and Develop by Ovatheme